package generatepath;

import java.util.ArrayList;

public class Aranjamente
{
    private int n, p, nrSol, solutie[];
    private static ArrayList<Integer[]> arr = new ArrayList<Integer[]>();
    
    public ArrayList<Integer[]> getArranjamente(){
    	return arr;
    }
    public Aranjamente(int n, int p)
    {
        this.n = n;
        this.p = p;
        solutie = new int[p];
        nrSol = 0;
        bkt(0);
//        System.out.println("\nS-au gasit " + nrSol + " solutii.");
    }

    private boolean posibil(int alfa, int k)
    {
        if(k >= p)
            return false;
        for(int i = 0; i < k; i++)
            if(solutie[i] == alfa)
                return false;
        return true;
    }

    private void afisareSolutie()
    {	Integer[] temp = new Integer[3];
//        System.out.println();
//        System.out.print("Solutia nr. " + (++nrSol) + " :  ");
        for(int i = 0; i < p; i++){
        	temp[i] = solutie[i];
//            System.out.print(solutie[i] + "   ");
        } 	
        arr.add(temp);
    }

    private void bkt(int k)
    {
        if(k == p)
            afisareSolutie();

        for(int alfa = 1; alfa <= n; alfa++)
            if(posibil(alfa, k))
            {
                solutie[k] = alfa;
                bkt(k+1);
            }
    }
    public static void main(String []s){
    	Aranjamente aranjamente = new Aranjamente(18, 2);
    }
}